// #include<bits/stdc++.h>
// using namespace std;
// #define all(x) (x).begin(),(x).end()
// #define rall(x) (x).rbegin(),(x).rend()
// const int N = 100 + 10;
// #define INF 0x3f3f3f3f;
// typedef long long int ll;
// #define close(); std::ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);
// //----------------------------------------------------------------------------//
// ll t, n;
// ll v[N], w[N], dp[N],ad[N];
// int main()
// {
// 	close();
// 	cin >> n >> t;
// 	for (int i = 1; i <= n; i++) cin >> w[i] >> v[i];

// 	for (int i = 1; i <= n; i++)//枚举删除的数字
// 	{
// 		memset(dp, 0, sizeof dp);

// 		for (int j = 1; j <= n; j++)
// 		{
// 			if (j == i) continue;
// 			for (int k = t; k >= w[i]; k--)//大于w[i]减少循环
// 			{
// 				dp[k] = max(dp[k], dp[k - w[k]] + v[k]);
// 			}
// 			ll tmp = 0;
// 			ad[i] = max(tmp, dp[t] - (dp[t - w[i]] + v[i]) + 1);
// 		}
// 	}
// 	for (int i = 1; i <= n; i++) cout << ad[i] << '\n';

// 	return 0;
// }



#include<bits/stdc++.h>
using namespace std;
#define all(x) (x).begin(),(x).end()
#define rall(x) (x).rbegin(),(x).rend()
const int N = 100 + 10;
#define INF 0x3f3f3f3f;
#define int long long
#define close(); std::ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);
//----------------------------------------------------------------------------//
int n,t,w[N],v[N],f[N],l,r,add[N];
int main()
{
	ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
	cin>>n>>t;
	for(int i=1;i<=n;i++)
	cin>>w[i]>>v[i];
	for(int k=1;k<=n;k++)
	{
		memset(f,0,sizeof(f));
		for(int i=1;i<=n;i++)
		{
			if(i==k)continue;
			for(int j=t;j>=w[i];j--)
			f[j]=max(f[j],f[j-w[i]]+v[i]);
		}
		add[k]=max(0ll,f[t]-(f[t-w[k]]+v[k])+1);
	}
	for(int i=1;i<=n;i++)cout<<add[i]<<'\n';

	return 0;
}
